Modern computing applications frequently require multiple machines to be implemented and deployed, connecting each machine to the appropriate network and storage devices. Implementations and deployments can be applied directly with physical computing resources, in which physical computing, storage, network and other resources in a computing infrastructure are arranged to suit the computing applications. Further, implementations and deployments can be applied with virtual computing resources in a virtualized computing environment, in which virtual computing resources are implemented and deployed, as supported by physical computing resources that implement the virtualized computing environment. The process of deploying an application requires matching the performance and service requirements of each machine required by the application with the capabilities of the infrastructure. Most deployments require IT specialists to manually match each infrastructure component to each of the application requirements. This results in a very static deployment, unable to easily benefit from new infrastructure components, or changes in application requirements.
Some environments attempt to address this limitation by defining “resource pools” into which the application may be deployed. This approach simplifies the process of matching application requirements against the infrastructure allowing applications to be deployed by non-experts (for example using a self-selection portal). However, poor granularity between pools frequently results in less than optimal use of the infrastructure components. Furthermore, the actual capabilities of the pool are not defined in terms of concrete semantics, e.g., processor clock rate, sustained IOPs (input/output operations per second), network bandwidth etc. Instead, pools may be defined with generic phrases (Gold, Silver, Bronze, etc.) that further complicate the process of selecting an appropriate pool, and result in a greater mismatch between the application needs and the infrastructure capabilities. A user may attempt to choose a best-fit from a generic description of two or more service pools, often resulting in either over- or under-specification of the infrastructure. In addition, applications cannot automatically benefit from improvements to infrastructure capabilities, if those new capabilities are closer to those demanded by the application.